package classes_secundarias;

import java.util.ArrayList;
import java.util.Scanner;

public class RepositorioFuncionario extends Repositorio{

	Scanner input = new Scanner(System.in);
	
	private ArrayList<Funcionario> itens = new ArrayList();
	private int contaFuncionario = 0;
	 
	/**
	 * Método para adicionar elementos com ArrayList
	 */
	public void adicionar(Object colaborador){
		
		this.itens.add((Funcionario)colaborador);
		contaFuncionario++;
	}	
	
	/**
	 * Método para exibir informações de funcionários
	 */
	public void exibir(){		
		
		//Imprimir elementos com ArrayList
		for(int i = 0; i < this.itens.size(); i++){
			System.out.println(itens.get(i).getNome());
		}
	}
	
	/**
	 * Metodo para alterar funcionarios
	 */
	public void alterar(){
		
		System.out.println("\t\t\tALTERAÇÃO DE FUNCIONÁRIOS");
		System.out.println("Nome: ");
		String nome = input.nextLine();		
		
		Funcionario alteraFuncionario = buscar(nome);
		
		alteraFuncionario.setNome("Paulo");
	}
	
	/**
	 * Metodo para excluir funcionarios
	 */
	public void excluir(String cpf){
		
		//Caso ainda nenhum funcionario tenha sido adicionado
		if (this.contaFuncionario == 0){
			System.out.println("Nao existem funcionarios cadastrados\n");
		} else {
			
			//Irá procurar pelo cpf informado no ArrayList
			for(int verifica = 0; verifica < this.itens.size(); verifica++){
				
				//Se o cpf for encontrado, irá confirmar a exclusão
				if (cpf.equals(itens.get(verifica).getCpf())){
					System.out.println("O CPF " + cpf + " foi encontrado!\nDeseja realmente excluir este funcionário [sim ou nao]?" + " ");
					String teste = input.nextLine();
					if (teste.equals("Sim") || teste.equals("sim")){
						
						//Remove o funcionário na posição 'verifica' do for, no ArrayList
						this.itens.remove(verifica);
						
						//Decrementa a quantidade de funcionários
						contaFuncionario--;
					} else {

						//Caso ele desista de exlcuir o funcionário
						return;
					}
				} 
			}
		}
	}
	
	/**
	 * Método para buscar funcionarios. Este método compara as três primeiras letras
	 */
	public Funcionario buscar(String nome){
		
		//Caso o nome não tenha, pelo menos, três letras
		if(nome.length() < 3){
			throw new IllegalArgumentException("Elementos Invalidos");
		}
		
		String recebe1 = nome.substring(0, 3);
		for(int verifica = 0; verifica < this.itens.size(); verifica++){
			String recebe2 = itens.get(verifica).getNome().substring(0, 3);
			if(nome.equals(itens.get(verifica).getNome()) || recebe1.equals(recebe2)){
				return itens.get(verifica);
			}
		}
		return null;
	}
	
	/**
	 * Método para coletar informações de funcionários.
	 */ 
	public void cadastroFuncionario(){
		
		Funcionario funcionario = new Funcionario("Funcionario1", "000.000.000-00");
		System.out.println("\t\t\tCADASTRO DE FUNCION�RIO");
		String recebe;
		
		System.out.println("Nome: ");
		recebe = input.nextLine();
		funcionario.setNome(recebe);
		
		System.out.println("CPF: ");
		recebe = input.nextLine();
		funcionario.setCpf(recebe);
		
		adicionar(funcionario);
//		System.out.println("Data de Nascimento: ");
//		recebe = input.nextLine();
//		setDataNascimento(recebe);
//		
//		System.out.println("\t\tENDERE�O");
//		
//		System.out.println("Rua: ");
//		recebe = input.nextLine();
//		setRua(recebe);
//		
//		System.out.println("N�mero: ");
//		recebe = input.nextLine();
//		setNumero(recebe);
//		
//		System.out.println("Complemeto: ");
//		recebe = input.nextLine();
//		setComplemento(recebe);
//		
//		System.out.println("Bairro: ");
//		recebe = input.nextLine();
//		setBairro(recebe);
//		
//		System.out.println("Cidade: ");
//		recebe = input.nextLine();
//		setCidade(recebe);
//		
//		System.out.println("Estado: ");
//		recebe = input.nextLine();
//		setEstado(recebe);
//		
//		System.out.println("Telefone: ");
//		recebe = input.nextLine();
//		setTelefone(recebe);
//		
//		System.out.println("Email: ");
//		recebe = input.nextLine();
//		setEmail(recebe);
		
		//return funcionario;
		
	}

}
